1. Field of the Invention
The present invention is related to allocating resources amongst multiple computers and more particularly to managing and allocating resources for cloud-based personal assistants.
2. Background Description
Recently, cloud computing has offered great opportunities for a broad range of applications. Cloud service providers (e.g., with mainframe computers) share Information Technology (IT) infrastructure with users/clients, connected together over networks in what constitutes a client-cloud system. The shared IT infrastructure (the cloud computers) provides end-user content and support, i.e., supply services and resources and handle data-intensive computing tasks for the clients. This has allowed user client devices to become much more lightweight and mobile and small enough to be hand held. Further, these lightweight, mobile devices still provide users with access to resources managed by the larger shared resource providers, allowing end-users access to cloud services through handheld devices.
Typically, cloud resources are allocated in response to prior requests. However, clients may request services/resources on the fly, when a need arises. This has resulted in periods of heavy utilization or peaks, e.g., during the workday, and low utilization or valleys, e.g., at night. Thus, service providers have sought to reactively and pro-actively set job priorities context-sensitively to optimize resource utilization, e.g., timing resource production to be available just as they are needed. In a fixed client environment, e.g., personal computers in an office environment, setting priorities for jobs may be a relatively straightforward task. In mobile personal assistance environment, however, targeting timely delivery for end-user support content, imposes mobility, dynamic environment and context-sensitivity issues that impact the timing and relevant context of the delivery area, i.e., what are known as “windows of opportunity.”
For what are commonly referred to as “cloud-based personal assistants” job processing typically refers to processing files (such as documents, graphs or videos), notifications, and any other computing support and communications with demands that exceed handheld device capabilities and efficiency. Processing elements that demand capacity, typically, are delegated to the cloud. Preferably, the cloud delivers the content for these elements in relevant end-user contexts. For example, the cloud may deliver documents for scheduled meetings just prior to, but close to, the scheduled meeting times. Timely delivery, however, not too early and not too late, may overload resources at that time, spiking cloud computing resource utilization and communications requirements. Alternatively, to minimize risk of tardy content deliveries, the cloud may deliver content early, which may unduly burden local resources, e.g., occupying handheld device space that might otherwise be used prior to the meeting for other, more timely matters.
Some prior approaches have been server centric, focusing on server-based job performance. Jobs, and in particular, complex and intricate jobs were scheduled according to cloud infrastructure (e.g., a server) deadlines, priorities and performance predictions. However, the variations of the end-user local context have not been considered in adjusting server-based job scheduling. Other approaches have focused on using local context reasoning to enhance handheld device processing deliberation and performance. Yet other approaches have extended these local processing performance enhancement approaches to further enhance bandwidth utilization, memory consumption, and connectivity.
These prior approaches to providing cloud support for handheld devices optimize for cloud requirements, without considering local contexts; or, optimize for local performance and response without considering cloud contexts. Consequently, there may be considerable wasted resources from processing existing job content that, because the mobile user's local context has changed, is no longer relevant in the current local context. For a single mobile device user this waste is insignificant. However, where a large number mobile users are accessing the cloud for one or more personal assistant jobs, they combine for a much more significant effect with a highly dynamicity delivery environment.
Thus, there is a need for flexibly scheduling and executing jobs in the cloud for local delivery, responding to local context variations, to minimize wasted resources from processing stale job content based on out of date contexts; and in particular, where a large number of personal assistants may have active jobs processing in a highly dynamic delivery environment.